<HTML><HEAD>
<!--
    -----------
    Hex Numbers
    -----------
-->

<SCRIPT LANGUAGE="JavaScript"><!-- hide from old browsers

/*
    THE JAVASCRIPT COOKBOOK by Erica Sadun, webrx@mindspring.com
    Copyright (c)1998 by Charles River Media.  All Rights Reserved.
    
    This applet can only be re-used or modifed by license holders of the
    JavaScript Cookbook CD-ROM.  Credit must be given in the source
    code and this copyright notice must be maintained. If you do
    not hold a license to the JavaScript Cookbook, you may NOT
    duplicate or modify this code for your own use.

    Use at your own risk. No warranty is given or implied of the suitability 
    of this applet for any specific application. Neither Erica Sadun nor 
    Charles River Media will be held responsible for any unwanted effects 
    due to the use of this applet or any derivative. 
*/



// --------------------Hexadecimal Conversion---------------------

// convert a single digit (0 - 16) into hex
function enHex(aDigit)
{
    return("0123456789ABCDEF".substring(aDigit, aDigit+1))
}

// convert a hex digit into decimal
function deHex(aDigit)
{
    return("0123456789ABCDEF".indexOf(aDigit))
}

// Convert a 24bit number to hex
function toHex(n)
{
    return (enHex((0xf00000 & n) >> 20) +
            enHex((0x0f0000 & n) >> 16) +
            enHex((0x00f000 & n) >> 12) +
            enHex((0x000f00 & n) >>  8) +
            enHex((0x0000f0 & n) >>  4) +
            enHex((0x00000f & n) >>  0))
}

// Convert a six character hex to decimal
function toDecimal(hexNum)
{
    var tmp = ""+hexNum.toUpperCase()
    while (tmp.length < 6) tmp = "0"+tmp
    
    return ((deHex(tmp.substring(0,1)) << 20) +
            (deHex(tmp.substring(1,2)) << 16) + 
            (deHex(tmp.substring(2,3)) << 12) +
            (deHex(tmp.substring(3,4)) << 8) +
            (deHex(tmp.substring(4,5)) << 4) +
            (deHex(tmp.substring(5,6))))
}

// Convert field to hex
function showToHex()
{
    document.forms[0].NOUT.value = toHex(parseInt(document.forms[0].NIN.value))
}

// Convert field to decimal
function showToDec()
{
    document.forms[0].NIN.value = toDecimal(document.forms[0].NOUT.value)
}

<!-- done hiding --></SCRIPT></HEAD>

<BODY BGCOLOR="FFFFFF" LINK="007777" VLINK="007777" ALINK="00FFFF">

<FONT COLOR="007777"><H1><IMG SRC="../GRAFX/UTENS.JPG" WIDTH=80 HEIGHT=50
    ALIGN = LEFT>Color "Hex" Numbers</H1></FONT>
    
<FONT SIZE=4>
JavaScript colors are stored as twenty-four bit
values that must be represented in base sixteen (hexadecimal, or
'hex' for short) before they can be used by JavaScript.  Hex
numbers range from zero to nine and the letter A through the letter F.
In hexadecimal, the number 0x10 means 16.  Here's a chart to compare
values in hex (base 16) with decimal values (base 10).<p>
</FONT>


<CENTER><TABLE BORDER=2>

<TR><TD COLSPAN=8><FONT COLOR="007777" SIZE=4><b>
    Hex Numbers</FONT></b></TD></TR>
<TR>
<td align=center><b>Hex</b></td><td align=center><b>Decimal</b></td>
<td align=center><b>Hex</b></td><td align=center><b>Decimal</b></td>
<td align=center><b>Hex</b></td><td align=center><b>Decimal</b></td>
<td align=center><b>Hex</b></td><td align=center><b>Decimal</b></td>
</TR><TR>
<td align=center>0</td><td align=center>0</td>
<td align=center>1</td><td align=center>1</td>
<td align=center>2</td><td align=center>2</td>
<td align=center>3</td><td align=center>3</td>
</TR><TR>
<td align=center>4</td><td align=center>4</td>
<td align=center>5</td><td align=center>5</td>
<td align=center>6</td><td align=center>6</td>
<td align=center>7</td><td align=center>7</td>
</TR><TR>
<td align=center>8</td><td align=center>8</td>
<td align=center>9</td><td align=center>9</td>
<td align=center>A</td><td align=center>10</td>
<td align=center>B</td><td align=center>11</td>
</TR><TR>
<td align=center>C</td><td align=center>12</td>
<td align=center>D</td><td align=center>13</td>
<td align=center>E</td><td align=center>14</td>
<td align=center>F</td><td align=center>15</td>
</TR>
</SCRIPT></TABLE></CENTER>

<BR><BR>
<FONT SIZE=4>
<b>Try it out.</b> Try converting your own numbers from decimal to hex and
back. This utility uses the <FONT COLOR="770000">toHex()</FONT> and
<FONT COLOR="770000">toDecimal()</FONT> functions to translate
the data between hexadecimal and decimal formats. Try converting:
<ul>
<li>256 decimal to hexadecimal
<li>64 in hexadecimal to decimal
<li>65535 decimal to hexadecimal
<li>400 hexadecimal to decimal
</ul>

<CENTER><FORM>
Decimal:<INPUT TYPE="TEXT" SIZE=8 NAME="NIN" VALUE="0">
<INPUT TYPE="BUTTON" VALUE="<- to Decimal"    onClick=showToDec()>
<INPUT TYPE="BUTTON" VALUE="-> to Hex"    onClick=showToHex()>
<INPUT TYPE="TEXT" SIZE=8 NAME="NOUT" VALUE="000000">:Hex
</FORM></CENTER></FONT>
<BR><BR>

<FONT COLOR="770000" SIZE=3><PRE>
// --------------------Hexadecimal Conversion---------------------

// convert a single digit (0 - 16) into hex
function enHex(aDigit)
{
    return("0123456789ABCDEF".substring(aDigit, aDigit+1))
}

// convert a hex digit into decimal
function deHex(aDigit)
{
    return("0123456789ABCDEF".indexOf(aDigit))
}

// Convert a 24bit number to hex
function toHex(n)
{
    return (enHex((0xf00000 & n) >> 20) +
            enHex((0x0f0000 & n) >> 16) +
            enHex((0x00f000 & n) >> 12) +
            enHex((0x000f00 & n) >>  8) +
            enHex((0x0000f0 & n) >>  4) +
            enHex((0x00000f & n) >>  0))
}

// Convert a six character hex to decimal
function toDecimal(hexNum)
{
    var tmp = ""+hexNum.toUpperCase()
    while (tmp.length < 6) tmp = "0"+tmp
    
    return ((deHex(tmp.substring(0,1)) << 20) +
            (deHex(tmp.substring(1,2)) << 16) + 
            (deHex(tmp.substring(2,3)) << 12) +
            (deHex(tmp.substring(3,4)) << 8) +
            (deHex(tmp.substring(4,5)) << 4) +
            (deHex(tmp.substring(5,6))))
}
</PRE></FONT>

<h5>Copyright &copy;1996 by Charles River Media, All Rights Reserved</h5>
</BODY>
</HTML>